/* 
      功能：折叠tokens。将#和/之间的tokens能够整合起来，作为它的下标为2的项。
*/
export default function NestTokens(tokens) {
      // 返回结果
      var nestTokens = [];
      // 栈结构，存放tokens的小项，栈顶的tokens数组中当前操作的这个tokens小数组。
      var sections = [];
      // 收集器。
      var collector = nestTokens;

      // for (let index = 0; index < tokens.length; index++) {
      //       const token = tokens[index];
      //       switch (token[0]) {
      //             case '#':
      //                   // 给这个token下标为2的项创建一个数组，以收集子元素
      //                   token[2] = [];
      //                   // 入栈
      //                   sections.push(token);
      //                   break;
      //             case '/':
      //                   // 出栈
      //                   var section = sections.pop();
      //                   // 要出栈的项加入到nestTokens中
      //                   nestTokens.push(section);
      //                   break;
      //             default:
      //                   // 判断，栈队列当前情况
      //                   if (sections.length == 0) {
      //                         nestTokens.push(token);
      //                   } else {
      //                         sections[sections.length - 1][2].push(token)
      //                   }
      //                   break;
      //       }
      // }

      for (let index = 0; index < tokens.length; index++) {
            const token = tokens[index];
            switch (token[0]) {
                  case '#':
                        collector.push(token);
                        sections.push(token);
                        collector = token[2] = [];
                        break;
                  case '/':
                        sections.pop();
                        collector = sections.length > 0 ? sections[sections.length - 1][2] : nestTokens;
                        break;
                  default:
                        collector.push(token);
                        break;
            }
      }

      return nestTokens;
}